Programación en Ciencias Sociales (CPO3523)

AndrƩs Cruz



2020-04-13



Repaso - Operaciones bƔsicas de manejo de datos

Manejo de datos con dplyr

Ilustración de [Allison Horst](https://github.com/allisonhorst/stats-illustrations).

Ilustración de Allison Horst.

Repaso de operaciones

  • Seleccionamos columnas con select()
  • Renombramos columnas con rename()
  • Filtramos filas con filter()
  • Ordenamos data frames con arrange()
  • Creamos columnas con mutate()
  • Generamos resĆŗmenes por grupo con el combo group_by() + summarize()
  • Hacemos cadenas de operaciones con las pipes (%>%)

Seleccionar columnas

  • Nos quedamos con solo algunas columnas de la base.

  • La función a utilizar es select().

  • everything() es una función de ayuda muy Ćŗtil:
  • TambiĆ©n podemos deseleccionar variables:

Renombrar columnas

  • La función es rename().

  • El segundo argumento toma la forma ā€œnombre_nuevo = nombre_antiguoā€.

Filtrar filas (I)

  • Nos quedamos con solo algunas filas de la base, de acuerdo a una condición lógica.

  • La función es filter().

Filtrar filas (II)

  • Funciona en base a operadores lógicos:
operador descripción
== es igual a
!= es distinto a
> es mayor a
< es menor a
>= es mayor o igual a
<= es menor o igual a
& intersección
| unión
%in% estĆ” contenido en

Filtrar filas (III)

  • Ejemplos con otros operadores lógicos:

Ordenar data frames

  • Podemos cambiar el orden en las filas de un data frame.

  • La función es arrange().

  • Podemos ordenar por mĆ”s de una variable. Las posteriores a la primera se utilizarĆ”n para resolver empates!

Crear columnas (I)

Ilustración de [Allison Horst](https://github.com/allisonhorst/stats-illustrations).

Ilustración de Allison Horst.

Crear columnas (II)

  • La función es mutate().

  • A partir de una sola variable:

  • A partir de mĆŗltiples variables:

ResĆŗmenes por grupo (I)

  • Primero, con summarize() podemos hacer resĆŗmenes para toda la base (agregarla/colapsarla):
## # A tibble: 1 x 1
##   prom_desemp
##         <dbl>
## 1        7.04
## # A tibble: 1 x 3
##   prom_desemp prom_crec prom_aprob
##         <dbl>     <dbl>      <dbl>
## 1        7.04      3.77       15.3

ResĆŗmenes por grupo (II)

  • MĆ”s interesantemente, podemos hacer resĆŗmenes por grupo. Primero tenemos que tener una base ā€œagrupadaā€:
## # A tibble: 17 x 4
##   country   prom_desemp prom_crec prom_aprob
##   <chr>           <dbl>     <dbl>      <dbl>
## 1 Argentina       11.0       2.72      16.7 
## 2 Bolivia          3.70      4.24      11.3 
## 3 Brazil           8.35      3.4       34.2 
## 4 Chile            8.18      4.33       5.71
## 5 Colombia        12.5       4.35      27.1 
## # … with 12 more rows

Cadenas de operaciones (I)

  • Usualmente queremos aplicar mĆ”s de una operación a un data frame. Las pipes (%>%) nos ayudan con esto.
  • La cadena de operaciones anterior es legible en lenguaje natural. Le dice a R, lĆ­nea por lĆ­nea:
    • Asigna un nuevo objeto, llamado ā€œdf_aprob_pib_pc_altoā€, que sea igual a ā€œdf_aprobā€, PERO LUEGO
    • Crea en Ć©l una columna ā€œpib_pcā€, que sea igual a ā€œwdi_gdpā€ dividido ā€œwdi_popā€, PERO LUEGO
    • FĆ­ltralo, quedĆ”ndote solo con las filas en las que ā€œpib_pcā€ sea mayor a la media de ā€œpib_pcā€ para la base.

Cadenas de operaciones (II)

  • Nota cómo omitimos el primer argumento de cada función! Para f1() %>% f2(), la pipe toma el output de f1 y lo entrega como input al primer argumento de f2.

Cadenas de operaciones (III)

  • Para hacer resĆŗmenes por grupo utilizar las pipes es una buena idea:
## # A tibble: 17 x 4
##   country   prom_desemp prom_crec prom_aprob
##   <chr>           <dbl>     <dbl>      <dbl>
## 1 Argentina       11.0       2.72      16.7 
## 2 Bolivia          3.70      4.24      11.3 
## 3 Brazil           8.35      3.4       34.2 
## 4 Chile            8.18      4.33       5.71
## 5 Colombia        12.5       4.35      27.1 
## # … with 12 more rows